import { useEffect, useMemo } from 'react';
import useAuthStore from '../stores/authStore';

/**
 * 自定义Hook，用于获取当前登录的教师用户信息
 * @returns {Object} 包含用户信息和相关操作的对象
 */
const useUser = () => {
  const { 
    user, 
    isAuthenticated, 
    fetchUserInfo, 
    updateUserInfo, 
    logout 
  } = useAuthStore();

  // 应用加载时获取用户信息
  useEffect(() => {
    if (isAuthenticated && !user) {
      fetchUserInfo();
    }
  }, [isAuthenticated, user, fetchUserInfo]);

  // 计算重要的用户属性，避免组件不必要的重渲染
  const userInfo = useMemo(() => {
    if (!user) return null;
    
    return {
      id: user.id,
      name: user.name,
      username: user.username,
      avatar: user.avatar,
      email: user.email,
      phone: user.phone,
      title: user.title,
      description: user.description
    };
  }, [user]);

  // 提供一个获取teacherId的便捷方法
  const getTeacherId = () => {
    return user?.id || null;
  };

  // 更新用户个人资料的方法
  const updateProfile = async (data) => {
    if (!user?.id) throw new Error('未登录或无法获取用户ID');
    return await updateUserInfo(user.id, data);
  };

  return {
    user: userInfo,
    isAuthenticated,
    teacherId: user?.id || null,
    updateProfile,
    logout,
    getTeacherId
  };
};

export default useUser; 